package day01.lambda;

import java.io.File;
import java.io.FileFilter;

/**
 * @ClassName LambdaDemo
 * @Description TODO
 * @Author xinghaiyang
 * @Date 2023/3/14 16:44
 * @Version 1.0
 *
 * Lambda表达式 jdk1.8之后推出的新特性
 * Lambda表达式应用场景:如果一个接口中只有一个抽象方法,可以使用Lambda表达式的方式
 **/
public class LambdaDemo {
    public static void main(String[] args) {
        //匿名内部类写法
        FileFilter ff1 = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.length()>1000;
            }
        };
        //Lambda表达式写法
        FileFilter ff2 = (File pathname) -> {
                return pathname.length()>1000;
        };
        //Lambda表达式中,可以忽略方法参数类型(仅写参数名即可)
        FileFilter ff3 = (pathname) -> {
            return pathname.length()>1000;
        };
        //如果该方法的参数只有一个的时候,参数列表的"()"可以忽略不写
        FileFilter ff4 = pathname -> {
            return pathname.length()>1000;
        };
        //如果方法体中只有一句代码,那么方法体的"{}"可以忽略不写
        //注:如果有return关键字,那么在忽略"{}"的同时"return"关键字也必须一同忽略
        FileFilter ff5 = pathname -> pathname.length()>1000;
    }
}
